package com.gg.communication.util;

/**
 * @author sakura
 * @date 2025/6/3
 */
public class ByteUtil {
    public static byte[] hexStringToByteArray(String hexString) {
        if (hexString == null || hexString.isEmpty()) {
            return new byte[0];
        }

        // 如果字符串长度是奇数，前面补0（可选处理，根据需求决定）
        if (hexString.length() % 2 != 0) {
            hexString = "0" + hexString;
        }

        int len = hexString.length();
        byte[] data = new byte[len / 2];

        for (int i = 0; i < len; i += 2) {
            // 每两个字符转换成一个byte
            data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
                    + Character.digit(hexString.charAt(i + 1), 16));
        }

        return data;
    }

    public static String byteArrayToHexString(byte[] bytes) {
        if (bytes == null || bytes.length == 0) {
            return "";
        }

        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            // 每个字节转换成 2 位 16 进制，不足补 0
            String hex = String.format("%02x", b);
            hexString.append(hex).append(" ");
        }

        // 去掉最后一个多余的空格
        return hexString.toString().trim();
    }
}
